/*
 * terminales-client.h
 *
 *  Created on: 08/09/2011
 *      Author: guido
 */

#ifndef TERMINALES_CLIENT_H_
#define TERMINALES_CLIENT_H_
#include "mensaje-consulta.h"
#include "mensaje-respuesta.h"
#include "canal.h"
#include "serializador.h"
#include "constantes.h"
#include <iostream>
#include <fstream>
#include <stdlib.h>

class Canal;

class TerminalesClient {
private:
	MensajeConsulta* mensajeConsulta;
	MensajeRespuesta* mensajeRespuesta;
	std::ifstream input;
	std::ofstream output;
	char* buffer;
	Serializador serializador;

public:
	TerminalesClient(char* entrada, char* salida) : input(entrada),
	output(salida, std::ios::trunc) {
		buffer = 0;
	}
	void operator>>(Canal& canal);
	void operator<<(Canal& canal);

	/* Lee de disco la proxima query */
	bool leerQuery();

	/* Avisa si quedan cosas para lees en disco */
	bool seguirProcesando();

	/* Avisa si el archivo de entrada esta en estado valido	 */
	bool entradaValida();

	/* Avisa si el archivo de salida esta en estado valido */
	bool salidaValida();
	void crearMensaje();
	~TerminalesClient();
};

#endif /* TERMINALES_CLIENT_H_ */
